#if !defined(__APP_ADC__)
#define __APP_ADC__
#include "main.h"
#include "FreeRTOS.h"
#include "queue.h"
#include "semphr.h"
#include "task.h"
#include "app_gpio.h"
#include "string.h"
#include "app_uartDMA.h"
#include "nczallcode.h"
#include "app.h"

// 定义队列（用于传递 ADC 数据）
// QueueHandle_t xADCDataQueue = NULL;
extern QueueHandle_t xADCDataQueue;

// 定义互斥锁（保护共享数据 frameDatatemp）
// SemaphoreHandle_t xFrameDataMutex = NULL;
extern SemaphoreHandle_t xFrameDataMutex;

// 队列项结构（传递 ADC 数据）
typedef struct {
    float frameData[32*32];  // 32x32 数据阵列
    // int clothsum;            // 校验和
} ADCDataMessage;



typedef struct adc_handle
{
	void (*init_adc)(void);
	uint8_t frame_data[1024];
	uint8_t send_2sdataflag;
	uint8_t send_1mdataflag;
}ADC_HANDLE;

extern ADC_HANDLE adc_handle;

extern float frameDatatemp[1024];

void AdcConfig(void);
void get32x32AdcValue(void);

void adc_task(void *pvParameters);

void send_second1024_task(void *pvParameters);

void nczallcode_task(void *pvParameters);

void init_adc(void);

#endif // __APP_ADC__
